/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package damas;

import java.util.LinkedList;
import java.util.List;

import damas.ReglasDeAvances.AvanzaComiendoHaciaAbajo;
import damas.ReglasDeAvances.AvanzaComiendoHaciaArriba;
import damas.ReglasDeAvances.AvanzaSinComerHaciaAbajo;
import damas.ReglasDeAvances.AvanzaSinComerHaciaArriba;
import damas.gui.DamasGui;
import damas.logicaYcontroladores.DamasLogica;
import damas.modelo.DamasEstado;
import damas.modelo.DamasModelo;
import engines.MinMaxABSearchEngine;
import framework.AdversarySearchEngine;
import framework.IRule;
import framework.SearchProblem;

;
/**
 * Clase que lanza la aplicaci�n
 * 
 * @author Sim�n Emmanuel Guti�rrez Brida
 * @version 0.1
 */
public class Damas {

	/**
	 * @param args
	 *            the command line arguments
	 */
	public static void main(String[] args) {
		AdversarySearchEngine<DamasEstado> ia = null;
		List<IRule<DamasEstado>> reglas = new LinkedList<IRule<DamasEstado>>();
		DamasEstado estado = new DamasEstado();
		SearchProblem<DamasEstado> problema;

		IRule<DamasEstado> regla1 = new AvanzaComiendoHaciaAbajo();
		IRule<DamasEstado> regla2 = new AvanzaComiendoHaciaArriba();
		IRule<DamasEstado> regla3 = new AvanzaSinComerHaciaAbajo();
		IRule<DamasEstado> regla4 = new AvanzaSinComerHaciaArriba();

		reglas.add(regla1);
		reglas.add(regla2);
		reglas.add(regla3);
		reglas.add(regla4);

		problema = new SearchProblem<DamasEstado>(estado, reglas);

		ia = new MinMaxABSearchEngine<DamasEstado>(problema, 4);

		DamasGui gui = new DamasGui();
		DamasModelo modelo = new DamasModelo(estado, gui);
		DamasLogica logica = new DamasLogica(modelo, ia);
		gui.definirLogica(logica);
		gui.init();
	}

}
